Communication networks generally comprise nodes that are connected externally to terminal resources and connected internally to each other by network links. The network enables messages to be communicated between remote terminal resources and network nodes by transmitting a message from an originating terminal resource to a first network node, associated with the originating terminal resource, from which it is transmitted to a second network node, associated with the terminating terminal resource. Finally, the message is transmitted from the second network node to the terminating terminal resource. Examples of communication networks of this type are the public switched telephone network, internetworks, and the global, packet-switched network known as the Internet.
In this context, “network node” means an addressable device in the network that processes information transmitted through the network by, for example, providing switching, routing, or converting capabilities. A network node stores incoming messages as they are received in a message queue, from which they are removed when processed. Examples of network nodes include switches, routers, call processors, and protocol converters.
One measurement of the efficiency of the system is its throughput. Network throughput is a measure of the volume of incoming messages that are successfully processed by network nodes over time. In general, system throughput increases as the number of messages received increases. However, each network and each network node has a maximum “load,” or capacity of work that it can successfully perform. Generally, as long as the actual load on a system or system component stays below its maximum load, the system throughput increases as the actual load increases.
When the actual load exceeds the maximum load, a system “overload” occurs. In an overload state, the message queues of the network nodes are at or are approaching capacity, and without an overload control strategy, further messages received by the nodes are randomly rejected or erroneously processed. For example, a protocol converter that is subject to overload conditions will receive more messages or requests for protocol conversion than it can process or output at a given time. In this condition, the protocol converter will fail to recognize and correctly process an arbitrary number of input messages. As a result, communications cannot proceed through the network at that node.
Other unpredictable results can occur during overload conditions. For example, in some networks, messages are time division multiplexed onto one or more channels linking the network nodes and terminal resources, and transmitted through the network as a plurality of packets. If individual packets are lost during an overload state, an originating node must generally re-send the entire message, even if other packets of the message were successfully transmitted. As a result, overload conditions can cause a dramatic decrease in system throughput.
When an overload condition occurs at certain types of call processors, the overload conditions can have a detrimental cascading effect on system operation. For example, one type of network node is a universal protocol converter of the type described in U.S. Pat. No. 6,111,893, entitled “Universal Protocol Converter”. In one aspect of operation, a universal protocol converter is connected logically between a first network and a second network, in which communication protocols used by the first network and the second network are incompatible. The universal protocol converter receives, among other things, incoming messages that request a call to be established, and messages that are part of existing calls. If the universal protocol converter is in an overload condition, there is a chance that it will receive and successfully process a call setup message, and then fail to successfully process later messages that relate to that call. As a result, calls are unnecessarily set up, creating a further undesirable load on the system.
It is apparent that a critical attribute of a successful and practical communication network is the ability to handle overload conditions. In particular, there is a need in network nodes for a mechanism that can recognize overload conditions and prevent unpredictable consequences from occurring.
There is also a need, in a network node such as a call processor or universal protocol converter, for a mechanism that can recognize overload conditions, identify call setup messages that are received during an overload condition, and prevent the establishment of new calls until the overload condition subsides.